package utils;

import net.sourceforge.pinyin4j.PinyinHelper;

/**
 * 拼音Util
 */
public class PinYinUtil {

    /**
     * 汉字转拼音
     * @param str 要转换的拼音连接符
     * @param separator 拼音的分隔符
     * @return 返回文字拼音
     */
    public  String convertChineseToPinyin(String str,String separator){
        StringBuilder pinyin = new StringBuilder();
        boolean separatorFlag = (null!=separator && !separator.isEmpty()); //分隔符标识符 ,true 传入分隔符

        for (char c : str.toCharArray()) {
            String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c);
            if (pinyinArray != null && pinyinArray.length > 0) {
                String subTone = pinyinArray[0].substring(0, pinyinArray[0].length() - 1); //去除声调后的拼音
                pinyin.append(subTone); // 取第一个拼音（通常是正确的）
                if(separatorFlag){ //拼接分割符
                    pinyin.append(separator);
                }
            } else {
                pinyin.append(c); // 非汉字字符保留原样或处理为空等
            }
        }

        String result = pinyin.toString();
        //处理最后一个分割符号
        if(separatorFlag){
            result=result.substring(0,result.lastIndexOf(separator));
        }

        return result;
    }

    /**
     * 获取汉字拼音首字母
     * @param str 汉字
     * @param isUpperCase 是否是大写
     * @return 返回拼音首字母大写或者小写
     */
    public String getFirstStrPinyinUpperCaseOrLowerCase(String str,Boolean isUpperCase){
        String pinyin = convertChineseToPinyin(str, null);
        return isUpperCase ?pinyin.substring(0,1).toUpperCase():pinyin;
    }


}
